查看原文
其他

从EVM到Wasm的范式转换,为什么波卡会成为公链的常青树?

Polkadot Labs Patract开放平台 2021-12-09



本文由Patract Labs与Polkadot生态研究院联合出品,本文会涉及一些技术用语,不过我们会用通俗易懂地方式再阐述一下,大家可酌情看重要解释即可。



背景


如果时光倒退到2017年,人们还会记得那一年区块链领域发生的事,尤其是公链领域的爆发,那一年号称要做公链的项目用数以万计来形容也不足为过,但后来的故事告诉我们,能真正倘过历史大河的公链其实屈指可数。于是,公链的竞争似乎由“万箭齐发”变成了“九九归一”,只剩下了以太坊扛起公链的生态大旗。

 

而4年后的今天,我们把时间拨回到2021年初,彼时公链生态已经没有了所谓的“以太坊杀手”,大家把注意力都放在了以太坊身上,不管是DeFi还是NFT,都从以太坊生态中所衍生。然而以太坊生态项目的火爆,也把以太坊的性能压榨完了,以太坊的转账慢,gas费高等老问题又再一次出现。

 

于是,一些新的解决方案逐渐浮出水面,最先脱颖而出的是币安智能链BSC,通过兼容EVM,快速将以太坊成熟的应用复刻到BSC上,并在币安交易所的支持下迅速壮大,成为如今第二大锁仓体量的公链。接着便是定位为Layer2聚合器的Polygon和高性能公链Solana相继在4月开始发力,公链兴起的概率越来越高。

 

而刚刚过去的8月,我们再一次见证了公链潮的爆发,Avalanche、Fantom、Celo等公链相继迎来了巨大的增长

 

这些公链突然振奋起来的原因,除了市场的炒热以及公链的激励机制,还源于他们几乎都采用或兼容了EVM(Ethereum Virtual Machine)“以太坊虚拟机”(Solana除外),从而能够快速用上智能合约,并实现有效的兼容,使得生态能够快速扩张起来,因此EVM奠定了一些公链爆发的基础。

 

尽管EVM目前算是区块链领域较为完备的机制,但它的局限性和时效性随着区块链发展也显得有些“落伍”,而作为EVM合约升级版的Wasm合约开始受到了众人关注

 

我们也看到,以太坊创始人“V神”早就表示以太坊2.0将会升级为Wasm合约(eWASM),以满足更多开发需求。而如今,Wasm合约的发展已经有了一定雏形,尤其是在波卡生态,开始有了更多接受者和采用者,他们似乎看到了遥远的未来……




快速了解EVM和Wasm



EVM和Wasm VM是两种区块链常用的虚拟机,现在许多大火的区块链几乎都会或多或少的兼容EVM,但是也有许多新兴公链会采用Wasm技术,这背后会是怎样的一种变化呢?要了解清楚这些,我们需要先简单了解些EVM和Wasm。



1

EVM是什么?


按照比较标准的定义,EVM是专门为以太坊客户端开发的虚拟机,主要用于在以太坊网络上运行智能合约代码,其本质上是虚拟机(VM),只不过更轻量。虚拟机,可以简单理解为它就是一台虚拟的计算机,于是我们可以在这台计算机上编写程序,运行程序。

 

而将该虚拟机(VM)应用到以太坊上,便有了我们熟知的EVM(以太坊虚拟机,Ethereum Virtual Machine),其主要作用是支持以太坊调用智能合约,从而完成合约的主动生效和自动执行。同时,借助以太坊的智能合约功能,我们才能在区块链网络上顺利完成各种模块化的任务。

 

通俗来说,借助以太坊的虚拟机我们可以将现实世界的合同或者合约映射到区块链上,从而当需求(或条件)发生时,自动完成交易或者转账,避免了合约的违规,可以说有了虚拟机的以太坊才有了以太坊后续的发展,也才给区块链带来了更多的应用,不管是DeFi、NFT还是其他联盟链功能。


2

Wasm是什么?


Wasm全称WebAssembly,一种在基于栈的虚拟机上运行的二进制的指令格式,这些代码可以是C、C++或Rust等,它们会被编译进你的浏览器,在你的CPU上以接近原生的速度运行,而这些代码的形式是二进制文件。Wasm的开发团队分别来自Mozilla、Google、Microsoft、Apple等公司,标准由W3C组织制定。

 

Wasm原本是为浏览器设计的虚拟机,但是越来越多开发者使用Wasm之后,便逐渐拓展了Wasm的使用场景,使得Wasm成为了目前最通用的格式之一。

 

在区块链领域,它的主机独立性、安全沙盒和整体简洁性等特性,使其成为智能合约的理想运行时(Runtime)。此外,它还允许使用多种现代编程语言(Rust、C++、JavaScript等)开发合约。以太坊团队一直在试用一个基于Wasm的合约引擎eWasm,并计划在2021年的某个时候正式发布它。



为什么说EVM会范式转换到Wasm上



1

范式转换是什么?


范式转换(Paradigm Shift),又称“范式转移”,由美国著名科学哲学家托马斯·库恩(Thomas S.Kuhn)最早提出,他认为“范式”是指特定的科学共同体从事某一类科学活动所必须遵循的公认的模式,它包括共有的世界观、基本理论、范例、方法、手段、标准等等与科学研究有关的所有东西。而这个概念还可以衍生到其他层面,比如经济层面,企业管理层面,商业层面等等。

 

范式转换也就是长期遵循的公认的模式A转换到另一种模式B的过程。比如,bp寻呼机的使用转换到手机的使用,短信转换到微信,DVD转换到流媒体等等。

 

反馈到现在的人类科学进程来看,我们的每一次巨大的科技进步都不是一种偶然,甚至可以说是一种必然,这些科技的指向性就向托马斯所描述的,“科学的发展是由一系列新理论取代旧理论的过程”,对于区块链来说,同样如此。

 

EVM自以太坊诞生以来,已经走过了7个年头,和当年的区块链世界相比,目前已经有了巨大的飞跃。按照范式转移的路径,以太坊即将迈入2.0时刻,那么EVM同样亟需更新迭代,EVM还是几年前的设计,但是新技术却在飞速发展,EVM似乎正在转向Wasm,也是范式转移的结果


2

Wasm对于EVM有什么优势?


以太坊基金会在Devcon上多次说明了自己打算将EVM过渡到Wasm的想法,但已经上线的庞大合约体量无法支持深层次的变革,生态也在这一临时方案上越走越远。选用Wasm作为智能合约的虚拟机的优势有以下几点:

 

1.完胜EVM虚拟机。相比EVM需要开发者预编译,较高的编程成本,Wasm虚拟机的结构、指令完备性及执行效率远胜于EVM虚拟机,将成为合约开发的新引擎。

 

2.执行速度快。Wasm有一套完整的语义,且具有紧凑的二进制格式,体积很小,这使得Wasm字节码运行时的效率可以接近于本地机器码的效率,比EVM的性能高1到2个数量级,后期还会升级为更快JIT虚拟机。

 

3.交易费用低。更快的Wasm虚拟机,致使交易吞吐量大幅提升,那么合约部署和交易成本也能大幅降低。可以说Wasm合约很好的解决了现在以太坊上交易费用高和交易拥堵的问题。

 

4.合约语言广。Wasm扩展了智能合同开发者可用的语言系列,支持使用任何Wasm的高级语言(如Rust、C++、JavaScript等)开发编写复杂业务逻辑,这意味着你可以用你熟悉的任何语言编写智能合约,包括最成熟的基于Rust的ink!,或基于AssemblyScript的Ask!等。


3

EVM会范式转换到Wasm的原因


尽管刚刚我们已经简述了Wasm在技术层面上比EVM有众多优势,但是EVM会范式转换到Wasm的原因绝不仅仅只是这一方面。

 

作为EVM的发明者同时也是波卡创始人Gavin博士,对这个问题拥有足够的话语权。在做波卡的时候,Gavin并没有沿用自己发明的EVM,而是选择Wasm,这背后的原因就能很好的解答这个问题。

 

尽管现在看来以太坊的EVM已经有六七年的历史了,并且许多公链都在采用或者兼容EVM,但是EVM并不一定会是最终的答案。

 

在当初Gavin博士选择离开以太坊,准备做新项目时,他有非常多的选择。但是对于Gavin博士来说,如果只是做一个别的项目的 “山寨版”,或者只是稍微地迭代一下,增加一下交易吞吐量,或者创造一种稍有改进的语言的话,是无法满足十分喜欢创新的他的。

 

于是,Gavin没有想过去走老路,他选择了一条没有人走过的路,创新的做一个比公链更底层的基础设施项目,而这就是波卡。

 

在做波卡时,选择Wasm的理由,也可以从他对EVM的态度可以看出:“很多人已经在使用EVM,所以支持这些遗留协议和遗留语言是非常重要的”,但同时也不能只靠着老技术吃饭,还要放眼新未来,“开始思考下一代工具是什么,而对我来说那就是使用WebAssembly作为智能合约”。

 

事实上,Wasm本身的许多优势还与波卡十分匹配。比如,区块链需要确定性,以便在点对点网络中的所有节点上进行可靠的状态转换更新,而不强制每个节点运行完全相同的硬件。Wasm就非常适合用于可能不同的机器集之间的可靠性。Wasm既高效又快速,这种效率意味着它可以作为一团代码上传到链上,而不会造成太多的状态膨胀,同时保持其以接近本机速度执行的能力。Wasm还支持了波卡的无分叉升级,也为波卡提供了另一大利器。

 

最懂EVM的Gavin都是如此选择Wasm的,对于其他公链来说也是如此。毕竟EVM的诞生也是有时代背景的,一个是当时的互联网发展还比较早,可以选用的优质技术并不多,Wasm在当时还未诞生(2015年6月Wasm才算诞生),所以当初Gavin博士还在以太坊担任CTO时,在设计以太坊的时候,他们试图不偏离世界当时所熟悉的东西太远,也就是比特币。EVM的问题在于它是一种非常固执己见的设计,因为它源自一种已经非常固执的设计,也就是比特币的脚本设计。

 

由此也可以看出,EVM算是时代的产物,也会受制于当时的时代背景和技术背景,并不是最优解。而随着Wasm在互联网领域做大做强逐渐完善,区块链领域的技术达人们也在尝试把这个更加优秀的技术运用到区块链上了。这也是为什么比较新兴的公链会更多的支持Wasm,然后以兼容的形式对接EVM了。




EVM可能以怎样的形式转换到Wasm上



1

对于以太坊等EVM生态来说会是怎么转换的?


首先我们看以太坊会如何从EVM迁移到eWASM上,而这绕不开的是讨论以太坊2.0的更新,按照以太坊开发团队公布的进程,随着以太坊2.0的实现,eWASM将会布局到新的以太坊使用环境中,以获取更快速、更便捷和更具包容性的开发。

 

而较早前,eWASM团队已经给出了其具体的设计目标:构建EVM转译器,以eWASM合约形式添加计量注入器,并发布明确详细的规范:以太坊接口、eWASM合约语义以及为solc编译器构建一个eWASM后端,同时提供C语言和Rust语言的相应指令和库,以支持智能合约编写。

 

当然,像EOS这样的生态早已进入了Wasm的怀抱,而像Tron和Cardano这样的公链也在走向Wasm的路上。


2

对于EVM和Wasm都支持的波卡来说是怎么转换的?


波卡原生支持Wasm技术,随后原本就十分熟悉以太坊的他们自然也明白EVM还是有许多优点的,比如已经形成网络效应的EVM生态拥有众多开发者和应用,这些都是宝贵的资源,必须妥善运用起来。

 

在2020年,Parity开发了兼容以太坊EVM的Substrate模块以及兼容层Frontier,从而允许EVM智能合约与Substrate其他的模块进行交互。用户也可以直接在Substrate上部署Solidity智能合约,同时使用Web3 RPC的工具(如Metamask和Truffle)与链上应用进行交互

 

所以,波卡上基于Substrate的链可以同时拥有两个模块,一个是EVM-Contracts 模块(用于执行原始Solidity/EVM代码),另一个是Substrate-Contracts模块(用于执行Solidity/Wasm或Ink! Wasm代码)。两者之间可以互操作,甚至可以将消息发布到桥接过来的单独的Parity-Ethereum链上,或者如果部署为平行链,则可以传播到包括以太坊主网在内的更广阔的波卡社区。

 

兼容并且可以交互,便可以让波卡顺利完成EVM到Wasm的过渡和迭代。


3

Patract如何加速EVM转换到Wasm


Parity是波卡的主要开发团队之一,他们的主要工作在于Substrate和Polkadot,因此在智能合约的部分工作相对而言没有很多。而在Wasm合约部分,尽管波卡已经选择了一个更优质的Wasm技术,但是Wasm合约开发者距离合约平台之间仍然有较大的鸿沟,因此Patract Labs便致力于成为连接合约开发者与合约平台之间的桥梁。

 

Patract Labs(https://patract.io/zh)是专注于波卡Wasm合约技术的实验室,目前受到波卡议会和国库的支持,先后为开发者推出数十款应用性强、技术超前的免费全套Wasm合约开发工具和服务,包括合约测试链、AS合约语言、合约开发脚手架、合约运行沙盒、波卡API服务、零知识证明支持、合约库、监控台、SDK、IDE等

 

并联合Parity和社区平行链改进合约模型、合约语言和开发工具等,推动成立Wasm合约开放平台——Patract Open Platform(https://open.patract.io)。通过这个平台将波卡生态内有意愿加入到Wasm合约生态的优秀的平行链或应用团队汇聚一起,展示其Wasm合约的具体实践和技术创新,提供市场和技术支持。

 

Patract Open Platform的成立不仅仅是提供底层设施和技术支持,Patract Labs还将通过Wasm合约技术,进一步探索波卡生态在未来产生的无限可能性。例如,以太坊合约采用EVM虚拟机和Solidity语言,导致无法低成本开发复杂合约,如果执行高频复杂度高的合约,交易成本将大幅上升,执行效率低下,对于像DeFi这样的领域就有非常大的局限性。对此,Patract Open Platfrom将从合约模型、合约标准(类似ERC20业务标准)、Runtime接口定制三个方向进行探索




为什么说波卡会是公链的常青树



1

波卡独特的功能奠定其位置


波卡的角色决定了它不是与一般公链做竞争,而是更好地为各个公链做跨链交互的底层支撑。如当下知名的公链比特币、以太坊、BSC、Cosmos、Near等等,都是可以通过转接桥或平行链等形式接入波卡。

 

而这些项目分别代表了不同时期,不同技术代表的公链,这已经验证了波卡是一个可以作为能伴随区块链技术更迭的长期存在的基础设施

 

如今,各公链百家争鸣,也有一些如Terra这样基于Cosmos的应用链也大放异彩,我们已经可以明确区块链的未来一定是多链的,那么注定未来的发展一定会是“铁打的波卡,流水的公链”。


2

波卡天然优势


波卡的创新设计,使得它获得了在升级和迭代底层技术方面其他公链所不具有的特性。

 

众所周知,公链进行升级必须要通过硬分叉来实现,而波卡由于在设计之初就定位为更底层的元协议,因此波卡升级无需硬分叉。这就使得波卡在迭代升级上就非常的容易,也更利于波卡自身的进化。

 

另外,波卡背后有一个划时代的发明——可以一键发链的Substrate框架,基于这个框架可以迅速构建一条区块链,而在这个框架中你可以将许多现成的功能模块添加到自己所构建的区块链中,就像组装电脑一样简单。这其中就有支持EVM的模块,那么同理可得,如果有更新的技术需要迭代,波卡也可以通过将这样的技术整合到Substrate框架中,从而让自己的生态也能兼容新技术

 

这边是让波卡能够时刻保持最前沿技术的原因之一,也是为什么我们说波卡会是常青树的理由之一。


3

波卡会有迭代技术的经验


波卡兼容EVM又支持Wasm,波卡的许多生态项目也是两者皆有。目前,波卡已经有一套完整的方案,用于EVM切换到Wasm上,意味着波卡已经探索出一条能够成功从老技术EVM迭代到新技术Wasm的路径。那么,当未来如果出现比Wasm更先进的技术,波卡可以复刻EVM到Wasm的范式转换,从而让Wasm再转换到新技术上。

 

用一个不是那么准确但又神似的比喻来形容这个过程,好比是我们有一个多卡多待的手机,可以同时插一个支持3G的电话卡和一个支持4G的电话卡,我们的手机可以享受两个卡的功能,并且可以互相兼容。但是有新技术出现时,波卡的迭代就很容易,可以把支持新技术5G的电话卡插入手机中,我们可以兼顾以前的老技术的同时享受新技术,而随着时间的推移,老技术的3G不怎么用了,变成长期用4G和5G,这样就做到了平滑的技术更迭。

 

有如此强大的可扩展性,波卡便有了不断迭代进化的可能性,不用担心波卡的技术会落后,也无需担心波卡升级很困难,这些都是支持波卡常青的原因。



后记



波卡虽然作为常青树,不用太担心技术迭代的问题,但是波卡生态非常巨大,光靠波卡官方肯定是不够的。所以,许多围绕着波卡生态在做努力建设的一些组织,正在用自己的方式加速波卡生态的发展

 

比如,为了让波卡有更多平行链项目诞生,一个专为开发者准备的最基本的节点环境是必不可少的,Patract就启动了一条Jupiter平行链测试网,并于8月上线了平行链跨链转账,能够将Westend(波卡测试网)与Jupiter的代币互相转换,以便更好的让开发者进行测试。

 

另外,Patract还开发完成了基于JavaScript的自动化测试环境Redspot开发脚手架。Europa合约沙盒环境已经式进入生产可用阶段,与Redspot一致进入长期维护。Elara API服务的官网已经开发完成,Elara v1.0对于平行链节点已支持Statemine,Karura,MoonRiver,Bifrost。开发者可基于Metis合约标准库构建常规DAPP。Ask!合约语言已经可以用于实验性质的环境下,通过AssemblyScript编写ERC20、ERC721这类复杂合约。

 

而为什么Patract以及我们Polkadot生态研究院等组织愿意深耕波卡生态,也离不开对波卡创始人Gavin的初心的认同——未来一定是多链的。

 

而波卡的技术创新与稳扎稳打也确实在逐步实现这个愿景,波卡确实值得我们托付梦想。所以,波卡虽然发展慢,但足够稳,稳到可以见证和陪伴许多公链的兴衰,我们不妨坐上这趟观光车,静看区块链技术的前行。




往期精彩:
PatraShare#12回顾|ink! 开发实践——组合范式(Metis) 之 ERC721及 Receiver

Wasm合约测试网Jupiter已发布平行链版本

完成Metis M1开发计划,开发者可基于Metis构建常规DAPP聚焦去中心计算:在可信平台,如何保证执行一致性的问题?Wasm合约生态的合约编程实践



About Patract


Patract 为波卡 Wasm 合约生态的平行链和 DApp 开发提供解决方案。


How to join Patract

官网|https://patract.io)

Element|https://app.element.io/#/room/#PatractLabsDev:matrix.org)

Discord|https://discord.gg/wJ8TnTfjcq)

Patract 开放平台|https://open.patract.io

Telegram|https://t.me/patract)

Twitter|https://twitter.com/PatractLabs)


我们正招聘区块链开发工程师、前端/全栈开发工程师、云平台架构师、数据产品经理、产品经理等岗位,可以联系 sean@patract.io


扫码加入Patract微信开发群

: . Video Mini Program Like ,轻点两下取消赞 Wow ,轻点两下取消在看

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存